package com.example.demo.domain.repository;

import com.example.demo.domain.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

public interface UserRepository extends JpaRepository<User,Integer> {

    /**
     * @Description: 通过用户ID删除相应用户
     * @Param:  id：用户ID
     * @return:  无
     * @Author: wangze
     */
    @Transactional
    @Modifying
    void deleteUserByUserId(Integer id);

    /**
    * @Description: 根据用户ID查找用户
    * @Param:  id：用户ID
    * @return:  用户实体
    * @Author: wangze
    */
    User findUserByUserId(Integer id);

    /**
    * @Description: 根据用户名查找用户
    * @Param:   username: 用户名
    * @return:  用户实体
    * @Author: wangze
    */
    User findByUsername(String username);


    /**
    * @Description: 根据关键字全部搜索
    * @Param:  keyword: 关键字
    * @return:  用户列表
    * @Author: wangze
    */
    List<User> findByUsernameContainingOrNameContainingOrDepartmentContaining(String keyword1,String keyword2,String keyword3);

    /**
     * @Description: 根据职工工号查找职工
     * @Param: workNumber: 职工工号
     * @return: 特定搜索列表
     * @Author: wangze
     */
    List<User> findByUsernameContaining(String workNumber);

    /**
     * @Description: 根据职工姓名查找职工
     * @Param: object：职工姓名
     * @return: 特定搜索列表
     * @Author: wangze
     */
    List<User> findByNameContaining(String name);

    /**
     * @Description: 根据职工部门查找职工
     * @Param: department：职工部门
     * @return: 特定搜索列表
     * @Author: wangze
     */
    List<User> findByDepartmentContaining(String department);
}
